package com.itic.appbase.applications.sys.relation.persistence.dao;

import java.util.List;
import java.util.Map;

import com.itic.appbase.applications.sys.relation.persistence.basedao.RoleResourceMapper;
import com.itic.appbase.applications.sys.relation.persistence.model.RoleResource;
import com.itic.appbase.applications.sys.relation.persistence.model.RoleResourceExample;
import com.itic.appbase.applications.sys.resource.persistence.model.Resource;
import com.itic.appbase.applications.sys.resource.vo.ResourceVo;
import com.itic.appbase.framework.common.annotation.IticDBDao;
import com.itic.appbase.framework.common.persistence.dao.CrudDao;

@IticDBDao
public interface RoleResourceDao
        extends RoleResourceMapper, CrudDao<RoleResource, RoleResourceExample> {
    /**
     * 根据角色id,查询角色在整个资源表中所拥有的资源
     * 表关系：T_SYS_RESOURCE left join T_SYS_ROLE_RESOURCE
     * 
     * @param map
     *            </br>key1:dbTrue idEffective 是否可用
     *            </br>key:idList 角色id组成的list集合
     * @return
     */
    public List<ResourceVo> selectResourceByRoleId(Map<String, Object> map);

    /**
     * 根据角色id,删除角色资源信息
     * 
     * @param map
     *            </br>key1:dbTrue idEffective 是否可用
     *            </br>key:idList 角色id组成的list集合
     * @return
     */
    public int deleteResourceByRoleId(Map<String, Object> map);

    /**
     * 根据用户id，查询用户所拥有的资源
     * 
     * @param map
     *            </br>key1:dbTrue idEffective 是否可用
     *            </br>key2:userId 用户id
     *            </br>key3:typeList 资源类型list集合
     * @return
     */
    public List<Resource> getResourceByUserId(Map<String, Object> map);
}